function fn() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(1)
    }, 3000);
  })
}

async function test() {
  // console.log(await {m: 1})
  try {
    const result = await fn()
    console.log('---------3')
    return result+2
  } catch (error) {
    console.log(error)
  }
  
}
function test_promise() {
  return fn().then(
    result => {
      console.log('---------3')
      return result+2
    },
    error => {
      console.log(error)
    }
  )
}

function test2() {
  console.log('--------1')
  test()
  test_promise()
  console.log('------2')
}
test2()
/* 
async函数返回的promise的结果由什么决定?
  async函数执行的结果的决定?
    抛出错误
    返回一个失败promise

    返回一个成功promise
    返回非promise值

    返回一个pendding的promise
*/